#ifndef __XLX_FILE_H__
#define __XLX_FILE_H__

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "esp_vfs.h"
#include "esp_vfs_fat.h"

#include "xlx_platform.h"

typedef FILE* TutuFileHandle;

//文件
typedef struct _TutuFile{
    /**打开文件，不等于0表示成功 ,返回文件句柄*/
    // TutuFileHandle (*my_open)(const char * file,const char* mode);
    // int (*my_write)(TutuFileHandle handle,const char *data,int len);
    // int (*my_read)(TutuFileHandle handle,char *outbuf,int len);
    // void (*my_close)(TutuFileHandle handle);
    //long int (*my_filesize)(TutuFileHandle handle);
    int (*my_seek)(TutuFileHandle handle,int pos);
    int (*my_delfile)(const char * file);
    
    /*
    *读取文件内容
    *@param data 为文件数据
    *@param len 输出文件大小
    *@return 	1读取成功		0读取失败
    */
    char (*read_file)(const char *file_name,char *data,unsigned long int *len);
    char (*read_file_ex)(const char *file_name,char *data,unsigned long int *len);  // 读指定大小

    /*
    *写内容到文件,文件存在则直接覆盖
    *@param data 为文件数据
    *@param len 输出文件大小
    *@return 	1读取成功		0读取失败
    */
    char (*write_file)(const char *file_name,char *data,unsigned long int len);

    long (*get_file_size)(const char *filename);

    /*
    * 列出所有文件
    * 并把文件信息通过out_buff带出来
    */
    void (*list_dir)(char * out_buff);

    /*
    * 挂载文件系统
    */
    int (*fs_mount)(void);

    /*
    * 卸载文件系统
    */    
    void (*fs_unmount)(void);
}TutuFile;

//初始化
void TutuFile_Init(TutuFile *myself);

#endif
